package com.leador.utils;

import android.util.Log;

import java.lang.reflect.Field;

/**
 * Created by lhy on 2016/09/30.
 */
public class JsonUtil {

    /**
     * 将 对象编码为 JSON格式
     *
     * @param t 待封装的对象
     * @return String: 封装后JSONObject String格式
     * @version 1.0
     */
    public static <T> String toJson(T t) {
        if (t == null) {
            return "{}";
        }
        return objectToJson(t);
    }

    /**
     * 将 对象编码为 JSON格式
     *
     * @param t 待封装的对象
     * @return String: 封装后JSONObject String格式
     * @version 1.0
     * @date 2015-10-11
     * @Author zhou.wenkai
     */
    private static <T> String objectToJson(T t) {
        Field[] fields = t.getClass().getDeclaredFields();
        StringBuilder sb = new StringBuilder(fields.length << 4);
        sb.append("{");

        for (Field field : fields) {
            field.setAccessible(true);
            Class<?> type = field.getType();
            String name = field.getName();

            String typeName = type.getName();
            Log.e("name typeName is",name+","+typeName);
//             typeName is: extend1,java.lang.String
//            10-07 20:53:55.330 20368-21168/com.trace.trackshow E/name typeName is: accuracy,int
//            10-07 20:53:55.340 20368-21168/com.trace.trackshow E/name typeName is: latitude,double
//            10-07 20:53:55.340 20368-21168/com.trace.trackshow E/name typeName is: longitude,double
//            10-07 20:53:55.340 20368-21168/com.trace.trackshow E/name typeName is: time,long
//            10-07 20:53:55.340 20368-21168/com.trace.trackshow E/name typeName is: altitude,int
//            10-07 20:53:55.340 20368-21168/com.trace.trackshow E/name typeName is: bearing,int
//            10-07 20:53:55.340 20368-21168/com.trace.trackshow E/name typeName is: enableUser,boolean
//            10-07 20:53:55.340 20368-21168/com.trace.trackshow E/name typeName is: speed,int
//            10-07 20:53:55.340 20368-21168/com.trace.trackshow E/name typeName is: statusTail,int
//            10-07 20:53:55.340 20368-21168/com.trace.trackshow E/name typeName is: type,int
        }
        return null;
    }
}
